/*
 * 版权所有 (C) 2018 知启蒙(ZHIQIM) 保留所有权利。
 * 
 * 欢迎到知启蒙网站（https://www.zhiqim.com）购买正版软件，知启蒙还提供许多开源框架和软件。
 * 
 * 1、本软件产品所有源代码受《中华人民共和国著作权法》和其他有关法律、法规的保护，其所有知识产权归湖南知启蒙科技有限公司所有；
 * 2、禁止复制和修改。不得复制修改、翻译或改编本软件所有源代码，或者基于本软件产品创作衍生作品；
 * 3、禁止进行逆向工程。不得对本软件的源代码进行逆向工程、反编译或试图以其他方式发现软件的源代码；
 * 4、个别授权：如需进行商业性的销售、复制、分发，包括但不限于软件销售、预装、捆绑等，必须获得知启蒙的书面授权和许可；
 * 5、保留权利：本注释未明示授权的其他一切权利仍归知启蒙所有，任何人使用其他权利时必须获得知启蒙的书面同意。
 */
package net.redxyz.repost.service.dao;

import java.util.List;

import net.redxyz.top.dbo.sys.SysPermission;

import org.zhiqim.kernel.util.Strings;
import org.zhiqim.kernel.util.Validates;
import org.zhiqim.orm.ORM;
import org.zhiqim.orm.dbo.Selector;

/**
 * 功能权限数据访问对象
 *
 * @version v1.0.0 @author zouzhigang 2014-3-21 新建与整理
 */
public class PermissionDao
{
    public static SysPermission itemPermissionByUrl(String permissionUrl) throws Exception
    {
        Selector selector = new Selector();
        selector.addMaybe("permissionStatus", 1);
        selector.addOrderbyAsc("permissionSort");
       
        List<SysPermission> permissionList = ORM.table().list(SysPermission.class, selector);
        
        for (SysPermission permission : permissionList)
        {
            String permissionOrgUrl = Strings.addEndsWith(permission.getPermissionUrl(), ",");
            permissionOrgUrl = Strings.addStartsWith(permissionOrgUrl, ",");
            
            permissionUrl = Strings.addStartsWith(permissionUrl, ",");
            permissionUrl = Strings.addEndsWith(permissionUrl, ",");
            if (permissionOrgUrl.contains(permissionUrl))
                return permission;
        }
        
        return null;
    }
    
    public static boolean isAppPermissionUrl(String appUrl, int giftVersionNo, String createTime) throws Exception
    {
        SysPermission permission = PermissionDao.itemPermissionByUrl(appUrl);
        if (permission == null)//默认如果没有在应用信息表中，认为是没有权限的
            return false;
        
        if (giftVersionNo >= permission.getPermissionRule() || (giftVersionNo >= permission.getPermissionRule2() && Validates.isNotEmpty(permission.getPermissionRule2Date()) && createTime.compareTo(permission.getPermissionRule2Date()) < 0))
            return true;
        else
            return false;
    }
}
